﻿package core.ui
{
    import __AS3__.vec.*;
    import core.image.*;
    import flash.display.*;
    import flash.events.*;
    import flash.geom.*;
    import flash.utils.*;

    public class Coating extends Bitmap
    {
        private var ants:Vector.<Boolean>;
        public var ed:Tuyitu;
        public var timer:Timer;
        var so:int = 7;

        public function Coating(param1:Tuyitu)
        {
            this.ants = this.Vector.<Boolean>([true, true, true, true, false, false, false, false, true, true, true, false, false, false, false, true, true, true, false, false, false, false, true, true, true, false, false, false, false, true, true, true, false, false, false, false, true, true, true, true, false, false, false, true, true, true, true, false, false, false, true, true, true, true, false, false, false, true, true, true, true, false, false, false]);
            this.ed = param1;
            return;
        }// end function

        public function Resize(http://adobe.com/AS3/2006/builtin:int, http://adobe.com/AS3/2006/builtin:int) : void
        {
            if (http://adobe.com/AS3/2006/builtin < 1)
            {
                http://adobe.com/AS3/2006/builtin = 1;
            }
            if (http://adobe.com/AS3/2006/builtin < 1)
            {
                http://adobe.com/AS3/2006/builtin = 1;
            }
            this.bitmapData = new BitmapData(http://adobe.com/AS3/2006/builtin, http://adobe.com/AS3/2006/builtin, true, 16777215);
            return;
        }// end function

        public function Clear() : void
        {
            if (this.bitmapData != null)
            {
                this.bitmapData.fillRect(this.bitmapData.rect, 16777215);
            }
            return;
        }// end function

        public function Animate() : void
        {
            if (this.timer == null)
            {
                this.timer = new Timer(150);
                this.timer.addEventListener(TimerEvent.TIMER, this.Redraw);
                this.timer.start();
            }
            else
            {
                this.timer.start();
            }
            return;
        }// end function

        public function Freeze() : void
        {
            if (this.timer != null)
            {
                this.timer.stop();
            }
            return;
        }// end function

        public function Deanimate() : void
        {
            if (this.timer != null)
            {
                this.timer.stop();
                this.timer = null;
            }
            this.Clear();
            return;
        }// end function

        public function DrawRect(http://adobe.com/AS3/2006/builtin:Rectangle) : void
        {
            var _loc_2:int = 0;
            var _loc_3:int = 0;
            this.Clear();
            this.bitmapData.lock();
            while (_loc_2 < http://adobe.com/AS3/2006/builtin.height)
            {
                
                this.DrawAnt(http://adobe.com/AS3/2006/builtin.left, http://adobe.com/AS3/2006/builtin.top + _loc_2);
                this.DrawAnt((http://adobe.com/AS3/2006/builtin.right - 1), http://adobe.com/AS3/2006/builtin.top + _loc_2);
                _loc_2++;
            }
            while (_loc_3 < http://adobe.com/AS3/2006/builtin.width)
            {
                
                this.DrawAnt(http://adobe.com/AS3/2006/builtin.left + _loc_3, http://adobe.com/AS3/2006/builtin.top);
                this.DrawAnt(http://adobe.com/AS3/2006/builtin.left + _loc_3, (http://adobe.com/AS3/2006/builtin.bottom - 1));
                _loc_3++;
            }
            this.bitmapData.unlock();
            this.Redraw();
            return;
        }// end function

        public function DrawEllipse(http://adobe.com/AS3/2006/builtin:Rectangle) : void
        {
            var _loc_2:int = 0;
            var _loc_3:int = 0;
            var _loc_4:int = 0;
            var _loc_5:int = 0;
            var _loc_6:int = 0;
            var _loc_7:int = 0;
            var _loc_8:int = 0;
            var _loc_9:int = 0;
            var _loc_10:int = 0;
            var _loc_11:int = 0;
            var _loc_12:int = 0;
            var _loc_13:int = 0;
            var _loc_14:int = 0;
            var _loc_15:int = 0;
            var _loc_16:int = 0;
            var _loc_17:int = 0;
            var _loc_18:Boolean = false;
            this.Clear();
            this.bitmapData.lock();
            var _loc_19:* = http://adobe.com/AS3/2006/builtin.width % 2 == 0 ? (1) : (0);
            var _loc_20:* = http://adobe.com/AS3/2006/builtin.height % 2 == 0 ? (1) : (0);
            _loc_2 = http://adobe.com/AS3/2006/builtin.width * 0.5;
            _loc_3 = http://adobe.com/AS3/2006/builtin.height * 0.5;
            _loc_10 = _loc_2 * _loc_2;
            _loc_11 = _loc_3 * _loc_3;
            _loc_14 = _loc_10 << 1;
            _loc_15 = _loc_11 << 1;
            _loc_16 = _loc_10 << 2;
            _loc_17 = _loc_11 << 2;
            _loc_8 = 0;
            _loc_9 = _loc_3;
            _loc_12 = _loc_10 * (1 - (_loc_3 << 1)) + _loc_15;
            _loc_13 = _loc_11 - _loc_14 * ((_loc_3 << 1) - 1);
            _loc_4 = _loc_15 * 3;
            _loc_5 = _loc_17;
            _loc_6 = _loc_16 * (_loc_3 - 1);
            _loc_7 = _loc_14 * ((_loc_3 << 1) - 3);
            this.DrawAnt(http://adobe.com/AS3/2006/builtin.left + _loc_8 + _loc_2 - _loc_19, http://adobe.com/AS3/2006/builtin.top + _loc_9 + _loc_3 - _loc_20);
            this.DrawAnt(http://adobe.com/AS3/2006/builtin.left - _loc_8 + _loc_2, http://adobe.com/AS3/2006/builtin.top + _loc_9 + _loc_3 - _loc_20);
            this.DrawAnt(http://adobe.com/AS3/2006/builtin.left - _loc_8 + _loc_2, http://adobe.com/AS3/2006/builtin.top - _loc_9 + _loc_3);
            this.DrawAnt(http://adobe.com/AS3/2006/builtin.left + _loc_8 + _loc_2 - _loc_19, http://adobe.com/AS3/2006/builtin.top - _loc_9 + _loc_3);
            do
            {
                
                if (_loc_12 < 0)
                {
                    _loc_12 = _loc_12 + _loc_4;
                    _loc_13 = _loc_13 + _loc_5;
                    _loc_4 = _loc_4 + _loc_17;
                    _loc_5 = _loc_5 + _loc_17;
                    _loc_8++;
                }
                else if (_loc_13 < 0)
                {
                    _loc_12 = _loc_12 + (_loc_4 - _loc_6);
                    _loc_4 = _loc_4 + _loc_17;
                    _loc_6 = _loc_6 - _loc_16;
                    _loc_13 = _loc_13 + (_loc_5 - _loc_7);
                    _loc_5 = _loc_5 + _loc_17;
                    _loc_7 = _loc_7 - _loc_16;
                    _loc_8++;
                    _loc_9 = _loc_9 - 1;
                }
                else
                {
                    _loc_12 = _loc_12 - _loc_6;
                    _loc_6 = _loc_6 - _loc_16;
                    _loc_13 = _loc_13 - _loc_7;
                    _loc_7 = _loc_7 - _loc_16;
                    _loc_9 = _loc_9 - 1;
                }
                this.DrawAnt(http://adobe.com/AS3/2006/builtin.left + _loc_8 + _loc_2 - _loc_19, http://adobe.com/AS3/2006/builtin.top + _loc_9 + _loc_3 - _loc_20);
                this.DrawAnt(http://adobe.com/AS3/2006/builtin.left - _loc_8 + _loc_2, http://adobe.com/AS3/2006/builtin.top + _loc_9 + _loc_3 - _loc_20);
                this.DrawAnt(http://adobe.com/AS3/2006/builtin.left - _loc_8 + _loc_2, http://adobe.com/AS3/2006/builtin.top - _loc_9 + _loc_3);
                this.DrawAnt(http://adobe.com/AS3/2006/builtin.left + _loc_8 + _loc_2 - _loc_19, http://adobe.com/AS3/2006/builtin.top - _loc_9 + _loc_3);
            }while (_loc_9 > 0)
            this.bitmapData.unlock();
            this.Redraw();
            return;
        }// end function

        public function Redraw(event:Event = null) : void
        {
            var _loc_2:Rectangle = null;
            var _loc_3:Number = NaN;
            var _loc_4:Selection = null;
            var _loc_5:OutlinePoint = null;
            var _loc_6:int = 0;
            var _loc_7:int = 0;
            var _loc_8:int = 0;
            var _loc_9:* = undefined;
            var _loc_10:int = 0;
            var _loc_11:int = 0;
            var _loc_12:int = 0;
            var _loc_13:int = 0;
            if (this.ed != null)
            {
                _loc_2 = this.ed.canvas.clip;
                _loc_3 = this.ed.canvas.zoomlevel;
                _loc_4 = this.ed.canvas.selection;
                if (_loc_4 != null && (!this.ed.cursor.freeze || event == null))
                {
                    this.bitmapData.lock();
                    if (_loc_3 > 1)
                    {
                        _loc_8 = Math.ceil(_loc_3) - 1;
                        _loc_9 = 0;
                        _loc_10 = 0;
                        _loc_11 = _loc_4.outline.length;
                        while (_loc_9 < _loc_11)
                        {
                            
                            _loc_5 = _loc_4.outline[_loc_9];
                            if (_loc_5.x + _loc_4.ox >= _loc_2.left && _loc_5.x + _loc_4.ox <= _loc_2.right && _loc_5.y + _loc_4.oy >= _loc_2.top && _loc_5.y + _loc_4.oy <= _loc_2.bottom)
                            {
                                _loc_6 = int((_loc_5.x + _loc_4.ox - _loc_2.x) * _loc_3) + this.ed.canvas.clipox;
                                _loc_7 = int((_loc_5.y + _loc_4.oy - _loc_2.y) * _loc_3) + this.ed.canvas.clipoy;
                                switch(_loc_5.location)
                                {
                                    case 0:
                                    {
                                        this.DrawAnt(_loc_6, _loc_7);
                                        _loc_10 = 1;
                                        while (_loc_10 <= _loc_8)
                                        {
                                            
                                            this.DrawAnt(_loc_6 + _loc_10, _loc_7);
                                            this.DrawAnt(_loc_6, _loc_7 + _loc_10);
                                            _loc_10++;
                                        }
                                        break;
                                    }
                                    case 1:
                                    {
                                        _loc_10 = 0;
                                        while (_loc_10 <= _loc_8)
                                        {
                                            
                                            this.DrawAnt(_loc_6 + _loc_10, _loc_7);
                                            _loc_10++;
                                        }
                                        break;
                                    }
                                    case 2:
                                    {
                                        _loc_6 = _loc_6 + _loc_8;
                                        this.DrawAnt(_loc_6, _loc_7);
                                        _loc_10 = 1;
                                        while (_loc_10 <= _loc_8)
                                        {
                                            
                                            this.DrawAnt(_loc_6 - _loc_10, _loc_7);
                                            this.DrawAnt(_loc_6, _loc_7 + _loc_10);
                                            _loc_10++;
                                        }
                                        break;
                                    }
                                    case 3:
                                    {
                                        _loc_10 = 0;
                                        while (_loc_10 <= _loc_8)
                                        {
                                            
                                            this.DrawAnt(_loc_6, _loc_7 + _loc_10);
                                            _loc_10++;
                                        }
                                        break;
                                    }
                                    case 4:
                                    {
                                        _loc_6 = _loc_6 + _loc_8;
                                        _loc_10 = 0;
                                        while (_loc_10 <= _loc_8)
                                        {
                                            
                                            this.DrawAnt(_loc_6, _loc_7 + _loc_10);
                                            _loc_10++;
                                        }
                                        break;
                                    }
                                    case 5:
                                    {
                                        _loc_7 = _loc_7 + _loc_8;
                                        this.DrawAnt(_loc_6, _loc_7);
                                        _loc_10 = 1;
                                        while (_loc_10 <= _loc_8)
                                        {
                                            
                                            this.DrawAnt(_loc_6, _loc_7 - _loc_10);
                                            this.DrawAnt(_loc_6 + _loc_10, _loc_7);
                                            _loc_10++;
                                        }
                                        break;
                                    }
                                    case 6:
                                    {
                                        _loc_7 = _loc_7 + _loc_8;
                                        _loc_10 = 0;
                                        while (_loc_10 <= _loc_8)
                                        {
                                            
                                            this.DrawAnt(_loc_6 + _loc_10, _loc_7);
                                            _loc_10++;
                                        }
                                        break;
                                    }
                                    case 7:
                                    {
                                        _loc_6 = _loc_6 + _loc_8;
                                        _loc_7 = _loc_7 + _loc_8;
                                        this.DrawAnt(_loc_6, _loc_7);
                                        _loc_10 = 1;
                                        while (_loc_10 <= _loc_8)
                                        {
                                            
                                            this.DrawAnt(_loc_6, _loc_7 - _loc_10);
                                            this.DrawAnt(_loc_6 - _loc_10, _loc_7);
                                            _loc_10++;
                                        }
                                        break;
                                    }
                                    case 8:
                                    {
                                        this.DrawAnt(_loc_6, _loc_7);
                                        this.DrawAnt(_loc_6 + _loc_8, _loc_7 + _loc_8);
                                        _loc_10 = 1;
                                        while (_loc_10 <= _loc_8)
                                        {
                                            
                                            this.DrawAnt(_loc_6 + _loc_10, _loc_7);
                                            this.DrawAnt(_loc_6, _loc_7 + _loc_10);
                                            this.DrawAnt(_loc_6 + _loc_8, _loc_7 - _loc_10 + _loc_8);
                                            this.DrawAnt(_loc_6 - _loc_10 + _loc_8, _loc_7 + _loc_8);
                                            _loc_10++;
                                        }
                                        break;
                                    }
                                    case 9:
                                    {
                                        this.DrawAnt(_loc_6, _loc_7);
                                        _loc_10 = 1;
                                        while (_loc_10 <= _loc_8)
                                        {
                                            
                                            this.DrawAnt(_loc_6 + _loc_10, _loc_7);
                                            this.DrawAnt(_loc_6, _loc_7 + _loc_10);
                                            this.DrawAnt(_loc_6 + _loc_10, _loc_7 + _loc_8);
                                            _loc_10++;
                                        }
                                        break;
                                    }
                                    case 10:
                                    {
                                        _loc_6 = _loc_6 + _loc_8;
                                        _loc_7 = _loc_7 + _loc_8;
                                        this.DrawAnt(_loc_6, _loc_7);
                                        _loc_10 = 1;
                                        while (_loc_10 <= _loc_8)
                                        {
                                            
                                            this.DrawAnt(_loc_6 + _loc_10 - _loc_8, _loc_7 - _loc_8);
                                            this.DrawAnt(_loc_6, _loc_7 - _loc_10);
                                            this.DrawAnt(_loc_6 - _loc_10, _loc_7);
                                            _loc_10++;
                                        }
                                        break;
                                    }
                                    case 11:
                                    {
                                        _loc_10 = 0;
                                        while (_loc_10 <= _loc_8)
                                        {
                                            
                                            this.DrawAnt(_loc_6 + _loc_10, _loc_7);
                                            this.DrawAnt(_loc_6, _loc_7 + _loc_10);
                                            this.DrawAnt(_loc_6 + _loc_8, _loc_7 + _loc_10);
                                            _loc_10++;
                                        }
                                        break;
                                    }
                                    case 12:
                                    {
                                        _loc_10 = 0;
                                        while (_loc_10 <= _loc_8)
                                        {
                                            
                                            this.DrawAnt(_loc_6 + _loc_10, _loc_7 + _loc_8);
                                            this.DrawAnt(_loc_6, _loc_7 + _loc_10);
                                            this.DrawAnt(_loc_6 + _loc_8, _loc_7 + _loc_10);
                                            _loc_10++;
                                        }
                                        break;
                                    }
                                    case 13:
                                    {
                                        _loc_10 = 0;
                                        while (_loc_10 <= _loc_8)
                                        {
                                            
                                            this.DrawAnt(_loc_6, _loc_7 + _loc_10);
                                            this.DrawAnt(_loc_6 + _loc_8, _loc_7 + _loc_10);
                                            _loc_10++;
                                        }
                                        break;
                                    }
                                    case 14:
                                    {
                                        _loc_10 = 0;
                                        while (_loc_10 <= _loc_8)
                                        {
                                            
                                            this.DrawAnt(_loc_6 + _loc_10, _loc_7);
                                            this.DrawAnt(_loc_6 + _loc_10, _loc_7 + _loc_8);
                                            _loc_10++;
                                        }
                                        break;
                                    }
                                    default:
                                    {
                                        break;
                                    }
                                }
                            }
                            _loc_9 = _loc_9 + 1;
                        }
                    }
                    else
                    {
                        _loc_12 = 0;
                        _loc_13 = _loc_4.outline.length;
                        while (_loc_12 < _loc_13)
                        {
                            
                            _loc_5 = _loc_4.outline[_loc_12];
                            _loc_6 = Math.round((_loc_5.x + _loc_4.ox - _loc_2.x) * _loc_3);
                            _loc_7 = Math.round((_loc_5.y + _loc_4.oy - _loc_2.y) * _loc_3);
                            this.DrawAnt(_loc_6, _loc_7);
                            _loc_12++;
                        }
                    }
                    this.bitmapData.unlock();
                    if (event != null)
                    {
                        var _loc_14:String = this;
                        _loc_14.so = this.so - 1;
                        if (--this.so < 0)
                        {
                            this.so = 7;
                        }
                    }
                }
            }
            return;
        }// end function

        private function DrawAnt(http://adobe.com/AS3/2006/builtin:int, http://adobe.com/AS3/2006/builtin:int) : void
        {
            if (http://adobe.com/AS3/2006/builtin >= 0 && http://adobe.com/AS3/2006/builtin >= 0)
            {
                this.bitmapData.setPixel32(http://adobe.com/AS3/2006/builtin, http://adobe.com/AS3/2006/builtin, this.ants[(http://adobe.com/AS3/2006/builtin + this.so) % 8 * 8 + http://adobe.com/AS3/2006/builtin % 8] ? (4278190080) : (4294967295));
            }
            return;
        }// end function

    }
}
